//
//  UILabel+YFExtension.m
//  project
//
//  Created by Winny Zhang on 2019/3/27.
//  Copyright © 2019 健健. All rights reserved.
//

#import "UILabel+YFExtension.h"

@implementation UILabel (YFExtension)

/**
 设置 Label 字体渐变
 必须有 superview
 默认 起点位置（1，0），终点位置（1，1）
 水平渐变，颜色平均分布

 @param colors 渐变色数组
 */
- (void)textHorizontalGradientWith:(NSArray<UIColor *> *)colors {
    [self textGradientWith:colors startPoint:(CGPointMake(1, 0)) endPoint:(CGPointMake(1, 1))];
}
/**
 设置 Label 字体渐变
 必须有 superview
 默认 起点位置（0，1），终点位置（1，1）
 垂直渐变，颜色平均分布
 
 @param colors 渐变色
 */
- (void)textVerticalGradientWith:(NSArray<UIColor *> *)colors {
    [self textGradientWith:colors startPoint:CGPointMake(0, 1) endPoint:(CGPointMake(1, 1))];
}

/**
 设置 Label 字体渐变
 必须有 superview

 @param colors 渐变色数组
 @param startPoint 开始位置
 @param endPoint 终止位置
 */
- (void)textGradientWith:(NSArray<UIColor *> *)colors startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint {
    NSMutableArray *cgColors = [NSMutableArray arrayWithCapacity:colors.count];
    [colors enumerateObjectsUsingBlock:^(UIColor * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        [cgColors addObject: (id)obj.CGColor];
    }];
    dispatch_async(dispatch_get_main_queue(), ^{
        CAGradientLayer* gradient = [CAGradientLayer layer];
        gradient.frame = self.frame;
        gradient.colors = cgColors;
        gradient.startPoint = startPoint;
        gradient.endPoint = endPoint;
        [self.superview.layer addSublayer:gradient];
        gradient.mask = self.layer;
        self.frame = gradient.bounds;
    });
}

@end
